package com.jit.BluetoothKey.utils;

import com.clj.fastble.utils.HexUtil;
import com.jit.BluetoothKey.entity.CarStatusBean;

/**
 * Created by Administrator on 2018/3/7.
 */

public class CarStatusResponseHelper {
    private static String tirePreesureStatue = "正常" ;
    public static void carStatusAnalysis(String data) {
        String substring = data.substring(2, 8); //截取标识
        String binStr = HexStr2BinUtil.bytes2BinStr(HexUtil.hexStringToBytes(data));
        if (substring.equals("620a01")){//车辆状态
            carStatus(binStr);
        }else if (substring.equals("620a10")||substring.equals("620a11")
                ||substring.equals("620a12")||substring.equals("620a13")){  // 车辆四个轮胎状态
            tirePressureStatus(substring,binStr);

        }
    }

    private static void tirePressureStatus(String substring,String data) {
        if (Integer.valueOf(data.substring(38,40))==0){  //系统状态
            // 系统正常
        }else if (Integer.valueOf(data.substring(38,40))==1){
            // 系统自检
        }else if (Integer.valueOf(data.substring(38,40))==2){
            //系统故障
        }else if (Integer.valueOf(data.substring(38,40))==3){
            // NO TPMS
        }

        if (data.substring(37,38).equals("0")){ // 轮胎信号
            //信号正常
        }else {
            //信号异常
        }

        //单个轮胎 漏气状态==========
        String substring1 = data.substring(34, 36);
        int i  = 0;
        if (Integer.valueOf(data.substring(34,36),2)==0){
            // 正常
        }else if (Integer.valueOf(data.substring(34,36),2)==1){
            // 快速漏气
        }else if (Integer.valueOf(data.substring(34,36),2)==2){
            //慢速漏气
        }else if (Integer.valueOf(data.substring(34,36),2)==3){
            // 预留
        }

        // 单个轮胎电池状态
        if (Integer.valueOf(data.substring(32,34),2)==0){
            //正常
        }else if (Integer.valueOf(data.substring(34,36),2)==1){
            //低电量
        }else if (Integer.valueOf(data.substring(34,36),2)==2){
            //预留
        }else if (Integer.valueOf(data.substring(34,36),2)==3){
            //预留
        }


        if (substring.equals("620a10")){
            tirePreesureStatue = "正常";
        }
        //单个胎压状态
        if (Integer.valueOf(data.substring(42,44),2)==0){
            //正常
        }else if (Integer.valueOf(data.substring(42,44),2)==1){
            if (tirePreesureStatue.equals("正常")){
                tirePreesureStatue = "过压";
            }
            //过压
        }else if (Integer.valueOf(data.substring(42,44),2)==2){
            if (tirePreesureStatue.equals("正常")) {
                tirePreesureStatue = "欠压";
            }
            //欠压
        }else if (Integer.valueOf(data.substring(42,44),2)==3){
            //预留
        }
        if (substring.equals("620a13")) {
            CarStatusBean.getInstance().setTirePressure(tirePreesureStatue);
        }

        //单个轮胎压力值
        Integer.valueOf(data.substring(44,56),2);

        //单个轮胎温度状态
        if (Integer.valueOf(data.substring(58,60),2)==0){
            //正常
        }else if (Integer.valueOf(data.substring(58,60),2)==1){
            //超高温
        }else if (Integer.valueOf(data.substring(58,60),2)==2){
            //高温
        }else if (Integer.valueOf(data.substring(58,60),2)==3){
            //预留
        }

        //单个轮胎温度
        double v = (int) Integer.valueOf(data.substring(58, 60), 2) * 0.1 - 40;
    }

    private static void carStatus(String data) {
        if (data.substring(39, 40).equals("0")) {  //驾驶员侧门状态  32
            //驾驶员侧门状态 关
        } else {
            //驾驶员侧门状态 开
        }

        if (data.substring(38, 39).equals("0")){  //副驾驶侧门状态  33
            //副驾驶侧门状态 关
        }else {
            //副驾驶侧门状态 开
        }

        if (data.substring(37, 38).equals("0")){  //左后门状态  34
            //左后门状态 关
        }else {
            // 左后门状态 开
        }

        if (data.substring(36, 37).equals("0")){  //右后门状态  35
            //右后门状态 关
        }else {
            //右后门状态 开
        }

        if (data.substring(35, 36).equals("0")){ //行李箱门状态 36
            //行李箱门状态 关
        }else {
            //行李箱门状态 开
        }

        if (data.substring(47, 48).equals("0")){  //驾驶员侧门锁状态 40
            //驾驶员侧门锁状态 锁
        }else {
            //驾驶员侧门锁状态 锁开
        }

        if (data.substring(46, 47).equals("0")){  //副驾驶侧门锁状态 41
            //副驾驶侧门锁状态 锁
        }else {
            //副驾驶侧门锁状态 锁开
        }

        if (data.substring(45, 46).equals("0")){  //左后门锁状态  42
            // 左后门锁状态 锁
        }else {
            // 左后门锁状态 锁开
        }

        if (data.substring(44, 45).equals("0")){  //右后门锁状态  43
            //右后门锁状态 锁
        }else {
            //右后门锁状态 锁开
        }

        if (data.substring(44, 45).equals("0")){   //行李箱门锁状态 44
            //行李箱门锁状态 锁
        }else {
            //行李箱门锁状态  锁开
        }

        if (data.substring(54, 56).equals("00")){  //防盗指示灯状态 48 49
            //防盗指示灯状态 Disarmed 解防
        }else if (data.substring(54, 56).equals("01")){
            //防盗指示灯状态 Armed 设防
        }else if (data.substring(54, 56).equals("10")){
            //防盗指示灯状态 Alarm 报警
        }

        if (data.substring(51, 54).equals("000")){  // 整车电源状态 50 51 52
            // 整车电源状态 OFF
        }else if (data.substring(51, 54).equals("001")){
            // 整车电源状态 ACC
        }else if (data.substring(51, 54).equals("010")){
            // 整车电源状态 IGN ON
        }else if (data.substring(51, 54).equals("111")){
            // 整车电源状态 INVALID VALUE
        }

        //读取车辆速度
        vehicleSpeed(data);

        //读取剩余电量
        remainPower(data);

        //续航里程
        rechargeMile(data);

        //车内温度
        temperatureInCar(data);
    }

    private static void temperatureInCar(String data) {
        String substring = data.substring(96, 104);
        int i = (int)Integer.valueOf(substring, 2)-40;
        CarStatusBean.getInstance().setTemperature(i+"");
    }

    private static void rechargeMile(String data) {
        String substring = data.substring(80, 96);
        Integer integer = Integer.valueOf(substring, 2);
        CarStatusBean.getInstance().setMile(integer.toString());
    }

    private static void remainPower(String data) {
        String substring = data.substring(72, 80);
        Integer integer = Integer.valueOf(substring, 2);
        CarStatusBean.getInstance().setPower(integer.toString());
    }

    /**
     *   车辆速度
     * @param data
     */
    private static void vehicleSpeed(String data) {
        String dataSpeed = data.substring(64, 80);
        String speed = ((int)Integer.valueOf(dataSpeed, 2)*0.1)+"";

    }
}